package com.lbc.sort;

import java.util.Arrays;

public class SelectSort {
    // 选择排序 O(n^2) ：每一趟选出乱序区中最小的元素的下标，最后交换
    public static void main(String[] args) {
        int arr [] = {3, 9, -1, 10, -2};
        System.out.println("排序前的数组为：" + Arrays.toString(arr));
        selectSort(arr);
        System.out.println("排序后的数组为：" + Arrays.toString(arr));

        //  事后测试8000个数字，大概三到四秒搞定
    }

    public static void selectSort(int[] arr) {
        int minIndex;
        int min;
        for (int i = 0; i < arr.length - 1; i++) {
            minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            min = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = min;
        }
    }
}
